home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland Pascal with Objects 7.0 / TVDEMO.ZIP / MOUSEDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1992-10-27  |  4KB  |  158 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Vision Demo                            }
  4. {   Copyright (c) 1990 by Borland International  }
  5. {                                                }
  6. {************************************************}
  7.  
  8. { Mouse option dialog used by TVDEMO.PAS and TVRDEMO.PAS }
  9.  
  10. unit MouseDlg;
  11.  
  12. {$F+,O+,X+,S-,D-}
  13.  
  14. interface
  15.  
  16. uses Drivers, Objects, Views, Dialogs;
  17.  
  18. const
  19.   CClickTester = #7#8;
  20.  
  21. type
  22.  
  23.   { TClickTester }
  24.  
  25.   {Palette layout}
  26.   { 0 = Unclicked }
  27.   { 1 = Clicked }
  28.  
  29.   PClickTester = ^TClickTester;
  30.   TClickTester = object(TStaticText)
  31.     Clicked: Boolean;
  32.     constructor Init(var Bounds: TRect; AText: String);
  33.     function GetPalette: PPalette; virtual;
  34.     procedure HandleEvent(var Event: TEvent); virtual;
  35.     procedure Draw; virtual;
  36.   end;
  37.  
  38.   { TMouseDialog }
  39.  
  40.   PMouseDialog = ^TMouseDialog;
  41.   TMouseDialog = object(TDialog)
  42.     MouseScrollBar: PScrollBar;
  43.     OldDelay: Word;
  44.     constructor Init;
  45.     constructor Load(var S: TStream);
  46.     procedure HandleEvent(var Event: TEvent); virtual;
  47.     procedure Store(var S: TStream);
  48.   end;
  49.  
  50. implementation
  51.  
  52. { TClickTester }
  53.  
  54. constructor TClickTester.Init(var Bounds: TRect; AText: String);
  55. begin
  56.   inherited Init(Bounds, AText);
  57.   Clicked := False;
  58. end;
  59.  
  60. function TClickTester.GetPalette: PPalette;
  61. const
  62.   P: String[Length(CClickTester)] = CClickTester;
  63. begin
  64.   GetPalette := @P;
  65. end;
  66.  
  67. procedure TClickTester.HandleEvent(var Event: TEvent);
  68. begin
  69.   inherited HandleEvent(Event);
  70.   if (Event.What = evMouseDown) then
  71.   begin
  72.     if Event.Double then
  73.     begin
  74.       Clicked := not Clicked;
  75.       DrawView;
  76.     end;
  77.     ClearEvent(Event);
  78.   end;
  79. end;
  80.  
  81. procedure TClickTester.Draw;
  82. var
  83.   B: TDrawBuffer;
  84.   C: Byte;
  85. begin
  86.   if Clicked then C := GetColor(2)
  87.   else C := GetColor(1);
  88.   MoveChar(B, ' ', C, Size.X);
  89.   MoveStr(B, Text^, C);
  90.   WriteLine(0, 0, Size.X, 1, B);
  91. end;
  92.  
  93. { TMouseDialog }
  94.  
  95. constructor TMouseDialog.Init;
  96. var
  97.   R: TRect;
  98. begin
  99.   R.Assign(0, 0, 34, 12);
  100.   inherited Init(R, 'Mouse options');
  101.   Options := Options or ofCentered;
  102.  
  103.   R.Assign(3, 4, 30, 5);
  104.   MouseScrollBar := New(PScrollBar, Init(R));
  105.   MouseScrollBar^.SetParams(1, 1, 20, 20, 1);
  106.   MouseScrollBar^.Options := MouseScrollBar^.Options or ofSelectable;
  107.   MouseScrollBar^.SetValue(DoubleDelay);
  108.   Insert(MouseScrollBar);
  109.   R.Assign(2, 2, 21, 3);
  110.   Insert(New(PLabel, Init(R, '~M~ouse double click', MouseScrollBar)));
  111.  
  112.   R.Assign(3, 3, 30, 4);
  113.   Insert(New(PClickTester, Init(R, 'Fast       Medium      Slow')));
  114.  
  115.   R.Assign(3, 6, 30, 7);
  116.   Insert(New(PCheckBoxes, Init(R,
  117.     NewSItem('~R~everse mouse buttons', nil))));
  118.  
  119.   OldDelay := DoubleDelay;
  120.  
  121.   R.Assign(9, 9, 19, 11);
  122.   Insert(New(PButton, Init(R, 'O~K~', cmOk, bfDefault)));
  123.   Inc(R.A.X, 12); Inc(R.B.X, 12);
  124.   Insert(New(PButton, Init(R, 'Cancel', cmCancel, bfNormal)));
  125.  
  126.   SelectNext(False);
  127. end;
  128.  
  129. constructor TMouseDialog.Load(var S: TStream);
  130. begin
  131.   inherited Load(S);
  132.   GetSubViewPtr(S, MouseScrollBar);
  133.   MouseScrollBar^.SetValue(DoubleDelay);
  134. end;
  135.  
  136. procedure TMouseDialog.HandleEvent(var Event: TEvent);
  137. begin
  138.   if (Event.What = evCommand) and (Event.Command = cmCancel) then
  139.     DoubleDelay := OldDelay;
  140.   inherited HandleEvent(Event);
  141.   case Event.What of
  142.     evBroadcast:
  143.       if Event.Command = cmScrollBarChanged then
  144.       begin
  145.         DoubleDelay := MouseScrollBar^.Value;
  146.         ClearEvent(Event);
  147.       end;
  148.   end;
  149. end;
  150.  
  151. procedure TMouseDialog.Store(var S: TStream);
  152. begin
  153.   inherited Store(S);
  154.   PutSubViewPtr(S, MouseScrollBar);
  155. end;
  156.  
  157. end.
  158.